package com.ajavaer.framework.pay.request;


import com.ajavaer.framework.common.tools.ObjectTools;

import java.util.HashMap;
import java.util.Map;

/**
 * 退款查询请求
 */
public class WeixinRefundQueryRequest implements WeixinPayRequest {

    public WeixinRefundQueryRequest() {
    }

    public Map<String, String> toMap() {
        Map<String, String> data = new HashMap<>();
        data.put("offset", String.valueOf(offset));
        // 以下四选一
        data.put("transaction_id", transaction_id);
        data.put("out_trade_no", out_trade_no);
        data.put("out_refund_no", out_refund_no);
        data.put("refund_id", refund_id);
        return ObjectTools.removeNull(data);
    }

    /**
     * 微信订单号
     */
    private String transaction_id;

    /**
     * 商户订单号(必填)
     * <p>商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*且在同一个商户号下唯一。<a href='https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_sl_api.php?chapter=4_2'>详见商户订单号</a></p>
     */
    private String out_trade_no;
    /**
     * 商户退款单号(必填)
     * <p>商户系统内部的退款单号，商户系统内部唯一，只能是数字、大小写字母_-|*@ ，同一退款单号多次请求只退一笔。</p>
     */
    private String out_refund_no;
    /**
     * 微信退款单号
     * <p>
     * 微信退款单号
     * <p>
     * refund_id、out_refund_no、out_trade_no、transaction_id四个参数必填一个，如果同时存在优先级为：
     * <p>
     * >out_refund_no>transaction_id>out_trade_no
     * </p>
     */
    private String refund_id;

    /**
     * 偏移量(选填)
     * <p>
     * 偏移量，当部分退款次数超过10次时可使用，表示返回的查询结果从这个偏移量开始取记录
     * </p>
     */
    private Integer offset;

    public String getTransaction_id() {
        return transaction_id;
    }

    public void setTransaction_id(String transaction_id) {
        this.transaction_id = transaction_id;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getOut_refund_no() {
        return out_refund_no;
    }

    public void setOut_refund_no(String out_refund_no) {
        this.out_refund_no = out_refund_no;
    }

    public String getRefund_id() {
        return refund_id;
    }

    public void setRefund_id(String refund_id) {
        this.refund_id = refund_id;
    }

    public Integer getOffset() {
        return offset;
    }

    public void setOffset(Integer offset) {
        this.offset = offset;
    }
}
